package com.xhtt.modules.inspection.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.xhtt.common.file.FileInfoModel;
import com.xhtt.modules.inspection.enums.PointSubTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang.StringUtils;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;


/**
 * 巡检点的设备的巡检的内容
 *
 * @author xj
 * @since 2019-01-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class InsPointSubitem extends Model<InsPointSubitem> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private Integer pointId;

    /**
     * 检查内容名称
     */
    private String name;

    /**
     * 1数值2字符
     */
    private Integer type;

    /**
     * 值
     */
    private String value;

    /**
     * 最大值
     */
    private Integer maxValue;

    /**
     * 最小值
     */
    private Integer minValue;

    /**
     * 单位
     */
    private String unit;

    /**
     * 1.设备2.检查表
     */
    @TableField(exist = false)
    private String pointType;

    /**
     * 设备名称
     */
    @TableField(exist = false)
    private String deviceName;

    /**
     * 实时值
     */
    @TableField(exist = false)
    private String realVal;

    /**
     * 照片集合
     */
    @TableField(exist = false)
    private List<FileInfoModel> fileInfoModels;

    /**
     * 状态描述
     */
    @TableField(exist = false)
    private String statusDescription;

    /**
     * 巡检时间
     */
    @TableField(exist = false)
    private LocalDateTime datetime;

    /**
     * 巡检综合查询是否已签到
     */
    @TableField(exist = false)
    private String isSign;

    /**
     * 是否需要拍照
     */
    private Boolean isPhoto;

    @TableLogic
    private int delFlag;

    /**
     * 备注
     */
    private String memo;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后一次调整时间
     */
    @TableField(update = "now()")
    private LocalDateTime updateTime;

    /**
     * 创建者ID，人工系统创建为0
     */
    private Integer createUserId;

    /**
     * 最后一次调整者ID
     */
    private Integer updateUserId;

    /**
     * value 字段转化为集合
     */
    @TableField(exist = false)
    private List<String> valueList;

    public List<String> getValueList() {
        if (this.type.equals(PointSubTypeEnum.STR.getCode()) && StringUtils.isNotEmpty(this.value)) {
            return Arrays.asList(this.value.split(";"));
        }
        return valueList;
    }

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
